集合
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
集合使用哈希表来存储元素,所以必须是可哈希化的元素才能存储在集合中。
哈希化的集合
在哈希化的集合中,查找元素的速度要比列表快很多。
numbers = {1,5,3,1,2}
print(numbers) #输出{1, 5, 3, 2}
添加元素
使用 add 方法来添加新的元素到集合中。
numbers = {1,5,3,1,2}
numbers.add(4)
numbers.add(1) #集合自动去重
print(numbers) #输出{1, 5, 3, 2, 4}
删除元素
使用 discard 方法来删除集合中的某个元素。
numbers = {1,5,3,1,2}
numbers.discard(1)
print(numbers) #输出{5, 3, 2}
清空集合
使用 clear 方法来清空集合。
numbers = {1,5,3,1,2}
numbers.clear()
print(numbers) #输出set()
是否在集合内
使用 in 和 not in 运算符判断元素是否在集合内。
numbers = {1,5,3,1,2}
print(1 in numbers) #输出True
print(4 in numbers) #输出False
集合的速度
判断某个元素是否在一个序列里面,用集合判断比列表和元组都要快,因为集合使用的哈希方法存储的数据。
集合元素个数
使用 len 函数来得到集合元素的个数。
numbers = {1,5,3,1,2}
print(len(numbers)) #输出4
集合方法
add
set.add(x)
add 方法,添加 x到集合 set 中。
clear
set.clear()
clear 方法,清空集合到集合 set 中。
copy
set.copy()
copy 方法,返回一个浅复制 set 的集合。
numbers = {1,2,3}
new_numbers = numbers.copy()
print(new_numbers) #输出{1, 2, 3}
discard
set.discard(x)
discard 方法,在集合 set 中删除 x。
pop
set.pop()
pop 方法,在集合 set 中删除最后一个元素并返回那个元素。
numbers = {1,5,3,1,2}
numbers.pop()
print(numbers) #输出{1,5,3}
update
set.update(set2)
update 方法,添加 set2 集合的元素到 set 中。
numbers = {1,5,3,1,2}
new_numbers = {4}
numbers.update(new_numbers)
print(numbers) #输出{1,5,3,2,4}
difference
set.difference(set2)
difference 方法,返回 set 与 set2 的差集。
numbers = {1,2,3}
new_numbers = {3,4,5}
print(numbers.difference(new_numbers)) #输出{1,2}
intersection
set.intersection(set2)
intersection 方法,返回 set 与 set2 的交集。
numbers = {1,2,3}
new_numbers = {3,4,5}
print(numbers.intersection(new_numbers)) #输出{3}
union
set.union(set2)
union 方法,返回 set 与 set2 的并集。
numbers = {1,2,3}
new_numbers = {3,4,5}
print(numbers.union(new_numbers)) #输出{1, 2, 3, 4,5}
isdisjoint
set.isdisjoint(set2)
isdisjoint 方法,判断 set 与 set2 是否有相同的元素,没有返回 True,否则返回 False。
numbers = {1,2,3}
old_numbers = {3,4,5}
new_numbers = {4,5}
print(numbers.isdisjoint(new_numbers)) #输出True
print(numbers.isdisjoint(old_numbers)) #输出False
issubset
set.issubset(set2)
issubset 方法,判断 set 是否是 set2 的子集。
numbers = {1,2,3}
old_numbers = {2,3}
new_numbers = {2,3,4}
print(old_numbers.issubset(numbers)) #输出True
print(new_numbers.issubset(numbers)) #输出False
issuperset
set.issuperset(set2)
issuperset 方法,判断 set 是否是 set2 的父集。
numbers = {1,2,3}
old_numbers = {1,2,4}
new_numbers = {1,2,3,4}
print(old_numbers.issuperset(numbers)) #输出False
print(new_numbers.issuperset(numbers)) #输出True
symmetric_difference
set.symmetric_difference(set2)
symmetric_difference 方法,返回 set2 和 set 中不重复的元素集。
numbers = {1,2,3}
new_numbers = {3,4,5}
print(numbers.symmetric_difference(new_numbers)) #输出{4,5,1,2}